package com.sanploy.common.util;

import com.sanploy.common.conf.PubliceVariable;
import com.sanploy.common.domain.vo.ChartSalesVo;
import com.sanploy.common.enums.Meta;
import com.sanploy.common.vo.BaseException;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created by zhu yingzhi on 2017/9/28.、
 * @author yingzhi zhu
 * 公共方法类
 */
public class CommonUtil {
    /**
     * 判断增删改 成功与否
     * @param effctRow 影响行数
     * @param meta 错误枚举
     * @return 成功
     * @throws BaseException
     */
    public static int judgeRUD(int effctRow,Meta meta) throws BaseException {
        if (effctRow< PubliceVariable.MinEffectRow){ throw new BaseException(meta);}
        return PubliceVariable.SuccessfulInt;
    }

    /**
     * 获取当前时间戳
     * @return
     */
    public static Long getCurrentTimestamp(){
        return System.currentTimeMillis();
    }

    /**
     * 获取特定间隔时间之前的时间 精确到秒
     * @param previous 时间间隔 毫秒
     * @return
     */
    public static String getBeforeTime(Long previous){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date(System.currentTimeMillis()- previous);
        return simpleDateFormat.format(date);
    }

    /**
     * 获取一般的时间格式 精确到秒
     * @return
     */
    public static String getTimeNormal(){
        return getTimeByFormat("yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 获取时间格式 精确到天
     * @return
     */
    public static String getTimeDay(){
        return getTimeByFormat("yyyy-MM-dd");
    }

    /**
     * 构造ChartSalesVo 并且设置Time 每一天ChartSalesVo的对象
     * @param days 天数
     * @return
     */
    public static List<ChartSalesVo> getRecentDay(int days){
        List<ChartSalesVo> list = new ArrayList<>(days);
        for (int i = 0; i < days; i++) {
            ChartSalesVo chartSalesVo = new ChartSalesVo();
            chartSalesVo.setTime(getBeforeTimeDay(1000*60*60*24L*i));
            list.add(chartSalesVo);
        }
        return list;
    }

    /**
     * 获取特定间隔时间之前的时间 精确到天
     * @param previous 时间间隔 毫秒
     * @return
     */
    private static String getBeforeTimeDay(Long previous){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date(System.currentTimeMillis()- previous);

        return simpleDateFormat.format(date);
    }

    /**
     * 通过传入格式获取时间 "yyyy-MM-dd"
     * @param format
     * @return
     */
    public static String getTimeByFormat(String format){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        Date date = new Date();

        return simpleDateFormat.format(date);

    }

}
